EFA(Elastic Fabric Adapter)対応のインスタンスタイプとスペック情報を AWS CLI で一覧出力したい

EFA(Elastic Fabric Adapter)対応のインスタンスタイプとスペック情報を AWS CLI で一覧出力したい

Clock Icon2024.12.23

はじめに

EFA(Elastic Fabric Adapter)をサポートしているインスタンスタイプを確認したいです。
しかし、マネジメントコンソールからでは EFA のサポート状況を簡単に把握できませんでした。
本記事では AWS CLI を使い、EFA 対応インスタンスとスペックを一覧出力する方法を紹介します。

結論

EFA 対応インスタンスとスペック情報を取得するには、次のコマンドを実行してください。実行結果は CSV ファイルに保存されます。

(echo '"Instance Type","vCPU","Physical Cores","Architecture","Clock Speed(GHz)","Memory(MiB)","Instance Store(GB)","Network Performance"'; \
aws ec2 describe-instance-types --region ap-northeast-1 | jq -r '
    .InstanceTypes[]
    | select(.NetworkInfo.EfaSupported == true)
    | [
        .InstanceType,
        .VCpuInfo.DefaultVCpus,
        .VCpuInfo.DefaultCores,
        .ProcessorInfo.SupportedArchitectures[0],
        .ProcessorInfo.SustainedClockSpeedInGhz,
        .MemoryInfo.SizeInMiB,
        (if .InstanceStorageSupported then .InstanceStorageInfo.TotalSizeInGB else 0 end),
        .NetworkInfo.NetworkPerformance
      ]
    | @csv' ; ) | sort -t',' -k3 -n > efa.csv

スプレッドシートで実行結果の CSV ファイルを開いた様子。

Cursor_と_無題のスプレッドシート_-_Google_スプレッドシート

課題と背景

EFA を利用した検証しようとしたとき、対応インスタンスタイプを確認する手間が大きいと感じました。

マネージメントコンソールからの確認

インスタンスタイプの一覧だけでは EFA 対応を確認できません。なお、ENA Express の対応は確認できます。

Cursor_と_InstanceTypes___EC2___ap-northeast-1-2

公式ドキュメントからの確認

Elastic Fabric Adapter for AI/ML and HPC workloads on Amazon EC2 - Amazon Elastic Compute Cloud

対応インスタンスタイプは確認できます。ただし、各インスタンスのスペックは確認できません。

Elastic_Fabric_Adapter_for_AI_ML_and_HPC_workloads_on_Amazon_EC2_-_Amazon_Elastic_Compute_Cloud

AWS CLI で確認する方法もドキュメントに記載されています。こちらも同様にスペックまでは確認できません。

$ aws ec2 describe-instance-types  --region us-east-1  --filters Name=network-info.efa-supported,Values=true  --query "InstanceTypes[*].[InstanceType]"  --output text | sort
c5n.18xlarge
c5n.9xlarge
c5n.metal
c6a.48xlarge
c6a.metal
c6gn.16xlarge
c6i.32xlarge

解決策

公式ドキュメント記載の aws ec2 describe-instance-types コマンドをベースにして、以下の情報も載せた一覧を出力します。

  • EFA 対応インスタンスの一覧
  • vCPU 数と、物理コア数
  • メモリー容量と、ネットワークパフォーマンスなど

echoコマンドで CSV 用のヘッダー行を作成します。リージョンは東京(ap-northeast-1)を指定しています。

(echo '"Instance Type","vCPU","Physical Cores","Architecture","Clock Speed(GHz)","Memory(MiB)","Instance Store(GB)","Network Performance"'; \
aws ec2 describe-instance-types --region ap-northeast-1 | jq -r '
    .InstanceTypes[]
    | select(.NetworkInfo.EfaSupported == true)
    | [
        .InstanceType,
        .VCpuInfo.DefaultVCpus,
        .VCpuInfo.DefaultCores,
        .ProcessorInfo.SupportedArchitectures[0],
        .ProcessorInfo.SustainedClockSpeedInGhz,
        .MemoryInfo.SizeInMiB,
        (if .InstanceStorageSupported then .InstanceStorageInfo.TotalSizeInGB else 0 end),
        .NetworkInfo.NetworkPerformance
      ]
    | @csv' ; ) | sort -t',' -k3 -n > efa.csv

実行結果の見方

実行結果は以下のような CSV ファイルとして出力されます。

"Instance Type","vCPU","Physical Cores","Architecture","Clock Speed(GHz)","Memory(MiB)","Instance Store(GB)","Network Performance"
"g4dn.8xlarge",32,16,"x86_64",2.5,131072,900,"50 Gigabit"
"g5.8xlarge",32,16,"x86_64",3.3,131072,900,"25 Gigabit"
"g6.8xlarge",32,16,"x86_64",3.4,131072,900,"25 Gigabit"

各列の意味

  • Instance Type: インスタンスタイプ名
  • vCPU: 仮想 CPU の数
  • Physical Cores: 物理コア数
  • Architecture: プロセッサアーキテクチャ
  • Clock Speed: プロセッサのクロック周波数
  • Memory: メモリ容量(MiB)
  • Instance Store: インスタンスストアの容量(GB)
  • Network Performance: ネットワーク性能

スプレッドシートで実行結果の CSV ファイルを開いた様子です。

Cursor_と_無題のスプレッドシート_-_Google_スプレッドシート

まとめ

本記事で紹介した AWS CLI コマンドには以下のメリットがあります。

  • EFA 対応インスタンス一覧とスペックを同時に出力できる
  • CSV ファイルで出力されるため、Excel やスプレッドシートでの加工が容易

おわりに

HPC ワークロードや、機械学習のトレーニングでは EFA を利用することが多いです。多くは大きなインスタンスタイプを使うことになるため、大方 EFA に対応しています。しかし、EFA 検証のためにネットワーク帯域が太くかつ、コストの兼ね合いを考慮すると探す方法に難儀しました。そこで AWS CLI で出力した結果を残しておきました。CPU系のワークロードであれば、スポットインスタンスの価格も確認して検証するとよりコストを抑えられます。

https://dev.classmethod.jp/articles/introduction-to-spotinfo/

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.